package com.shuda.system.service;

import com.shuda.common.dto.PageDTO;
import com.shuda.common.dto.PageResult;
import com.shuda.system.dto.MenuDTO;
import com.shuda.system.dto.MenuQueryDTO;

import java.util.List;

/**
 * 菜单服务接口
 */
public interface MenuService {

    /**
     * 获取菜单分页列表
     */
    PageResult<MenuDTO> getMenuPage(PageDTO pageDTO, MenuQueryDTO queryDTO);

    /**
     * 根据ID获取菜单详情
     */
    MenuDTO getMenuById(Long id);

    /**
     * 创建菜单
     */
    Long createMenu(MenuDTO menuDTO);

    /**
     * 更新菜单
     */
    void updateMenu(Long id, MenuDTO menuDTO);

    /**
     * 删除菜单
     */
    void deleteMenu(Long id);

    /**
     * 批量删除菜单
     */
    void batchDeleteMenu(List<Long> ids);

    /**
     * 更新菜单状态
     */
    void updateMenuStatus(Long id, Integer status);

    /**
     * 获取所有启用的菜单列表
     */
    List<MenuDTO> getAllEnabledMenus();

    /**
     * 获取菜单树结构
     */
    List<MenuDTO> getMenuTree();

    /**
     * 获取用户菜单列表
     */
    List<MenuDTO> getUserMenus(Long userId);
}